package main

import (
	"fmt"
	"reflect"
)

type Student struct {
	Name string
	Age int
}

// 专门演示反射
func reflectTest01(b interface{}) {
	rTyp := reflect.TypeOf(b)
	fmt.Printf("rTyp is %v\n", rTyp)
	rVal := reflect.ValueOf(b)
	fmt.Printf("rVal type if %T\n", rVal)

	// 获取变量对应的Kind
	fmt.Printf("kind = %v\n", rVal.Kind())
	fmt.Printf("kind = %v\n", rTyp.Kind())
}


func main() {

	// 请编写一个案例，演示对(基本数据类型、interface{}、reflect.Value)进行反射的基本操作请编写一个案例，演示对(基本数据类型、interface{}、reflect.Value)进行反射的基本操作

	// 1. 定义一个int
	var num int = 100
	reflectTest01(num)

	student := Student {"tom", 26}
	reflectTest01(student)

}